package epoch.game.core.timer;

import epoch.game.core.thread.ServerThread;

/**
 * 服务器定时任务
 * 
 * @author will
 * @date 2015年6月26日 下午6:54:19
 */
public class ServerTimerTask {

	//开始执行就开始计时
	FixedRateServerTimerTask fixedRateTimerTask;
	//执行完才开始计时
	FixedDelayServerTimerTask fixedDelayTimerTask;

	public ServerTimerTask(ServerThread serverThread){
		fixedRateTimerTask = new FixedRateServerTimerTask(serverThread);
		fixedDelayTimerTask = new FixedDelayServerTimerTask(serverThread);
	}
	
	public FixedRateServerTimerTask getFixedRateTimerTask() {
		return fixedRateTimerTask;
	}

	public void setFixedRateTimerTask(FixedRateServerTimerTask fixedRateTimerTask) {
		this.fixedRateTimerTask = fixedRateTimerTask;
	}

	public FixedDelayServerTimerTask getFixedDelayTimerTask() {
		return fixedDelayTimerTask;
	}

	public void setFixedDelayTimerTask(FixedDelayServerTimerTask fixedDelayTimerTask) {
		this.fixedDelayTimerTask = fixedDelayTimerTask;
	}

	/**
	 * 添加定时器
	 * 
	 * @param timer
	 */
	public void addTimer(GameTimer timer) {
		if(timer.isFixedRate()){
			fixedRateTimerTask.addTimer(timer);
		}else{
			fixedDelayTimerTask.addTimer(timer);
		}
	}

	public void removeTimer(GameTimer timer) {
		if(timer.isFixedRate()){
			fixedRateTimerTask.removeTimer(timer);
		}else{
			fixedDelayTimerTask.removeTimer(timer);
		}
	}
	
	/**
	 * 开始执行定任务
	 */
	public void start(){
		if(fixedRateTimerTask!=null){
			fixedRateTimerTask.start();
		}
		if(fixedDelayTimerTask!=null){
			fixedDelayTimerTask.start();
		}
	}
	
	/**
	 * 取消定时任务的执行
	 * 
	 * @param force
	 */
	public void cancel(boolean force){
		if(fixedDelayTimerTask!=null){
			fixedRateTimerTask.cancel(force);
		}
		if(fixedDelayTimerTask!=null){
			fixedDelayTimerTask.cancel(force);
		}
	}	
}
